/************
 * bui 入口
 * Created by donkey on 2017/12/25
 ************/
/* eslint-disable */

//semantic-UI
import './scss/index.scss'

// vue-cookies
import VueCookies from 'vue-cookies'

// 上传
import uploader from './_plugin/simple-uploader'

// eventbus
import EventProxy from 'vue-event-proxy';

// 在线编辑器
import { VueEditor, Quill } from 'vue2-editor'
window.Quill = Quill


const components = (r => {
    // console.log(r.keys())
    return r.keys().map(key => r(key))
})(require.context('./', true, /^\.((?!\/(demo-|_|index)).)*\.(vue|js)$/))

//
function mapComp(Vue) {
    components.forEach(item => {
        let comp = item.default
        if (comp && comp.install) {
            // 带install的作安装操作
            Vue.use(comp)
        }
        if (comp && comp.name) {
            //有名字就只bui组件
            let compName = comp.name.replace(/^(?!ui-)/, 'ui-')
            Vue.component(compName, comp)
        }
    })
    Vue.use(uploader)
    Vue.use(EventProxy)
    Vue.use(VueCookies)
    Vue.use(VueEditor)

    // 设置 elementUI的全局size为small
    Vue.prototype.$ELEMENT.size = 'small'
}

// $bui 公共方法
export const $buiCommon = {
    inject(Vue) {
        // 公共方法库
        if (!Vue.prototype.$bui) {
            Object.defineProperty(Vue.prototype, '$bui', {
                value: {}
            })
        }
        // console.log公共方法
        // (当 window.DEBUG = false 全局关闭log, 当 this.debug = false 局部关闭log)
        Object.defineProperty(Vue.prototype, 'log', {
            value: function () {
                if (window.DEBUG === true) {
                    if (this.debug === undefined || this.debug === true) {
                        console.log(...arguments)
                    }
                }
                return false
            }
        })
        mapComp(Vue)
    }
}

// table需要混入的公共方法
import mix_table from './Mixins/_table.js'
// 作为微前端子应用被加载会报错误，所以进行屏蔽
if (!window.__POWERED_BY_QIANKUN__) {
    Object.defineProperty(window, 'MIX_TABLE', {
        value: mix_table
    })
}

// bui 组件
export const BuiComponents = {
    install(Vue) {
        mapComp(Vue)
    }
}


